package com.ruoyi.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.entity.WsdCanteenBalance;

import java.math.BigDecimal;
import java.util.List;

/**
 * 饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额Service接口
 * 
 * @author ruoyi
 * @date 2024-05-22
 */
public interface IWsdCanteenBalanceService extends IService<WsdCanteenBalance>
{
    /**
     * 查询饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额
     * 
     * @param balanceId 饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额主键
     * @return 饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额
     */
    public WsdCanteenBalance selectWsdCanteenBalanceByBalanceId(String balanceId);

    /**
     * 查询饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额列表
     * 
     * @param wsdCanteenBalance 饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额
     * @return 饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额集合
     */
    public List<WsdCanteenBalance> selectWsdCanteenBalanceList(WsdCanteenBalance wsdCanteenBalance);

    /**
     * 新增饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额
     * 
     * @param wsdCanteenBalance 饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额
     * @return 结果
     */
    public int insertWsdCanteenBalance(WsdCanteenBalance wsdCanteenBalance);

    /**
     * 修改饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额
     * 
     * @param wsdCanteenBalance 饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额
     * @return 结果
     */
    public int updateWsdCanteenBalance(WsdCanteenBalance wsdCanteenBalance);

    /**
     * 批量删除饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额
     * 
     * @param balanceIds 需要删除的饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额主键集合
     * @return 结果
     */
    public int deleteWsdCanteenBalanceByBalanceIds(String[] balanceIds);

    /**
     * 删除饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额信息
     * 
     * @param balanceId 饭堂余额，记录学生在学校饭堂的总充值金额和总退款金额主键
     * @return 结果
     */
    public int deleteWsdCanteenBalanceByBalanceId(String balanceId);

    /**
     * 更新或创建学生充值记录
     *
     * @param studentId   学生ID
     * @param schoolsId   学校ID
     * @param checkAmount 充值金额（以元为单位，充值总是正数）
     * @param mealType
     */
    void rechargeBalance(Long studentId, Long schoolsId, BigDecimal checkAmount, Integer mealType);

    /**
     * 查询学校订餐人数
     *
     * @param schoolId
     * @return
     */
    Integer selectStudentCountBySchool(Long schoolId);

}
